package generics;

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        ArrayList<Cat> listC = new ArrayList<>();
        ArrayList<Dog> listD = new ArrayList<>();
        ArrayList<Animal> listA = new ArrayList<>();
        Persian persian = new Persian("bosi",2);
        Tanuki tanuki = new Tanuki("lihua",1);
        Husky husky = new Husky("huashiqi",3);
        Teddy teddy = new Teddy("taidi",1);
        //能养所有的猫，不能养狗
        listC.add(persian);
        listC.add(tanuki);
//        listC.add(husky);
//        listC.add(teddy);
        KeepPetC(listC);
        //能养所有的狗，不能养猫
//        listD.add(persian);
//        listD.add(tanuki);
        listD.add(husky);
        listD.add(teddy);
        KeepPetD(listD);
        //能养所有的动物，不能传递其他的类型
        listA.add(persian);
        listA.add(tanuki);
        listA.add(husky);
        listA.add(teddy);
        KeepPetA(listA);
    }

    public static void KeepPetC(ArrayList<? extends Cat> list){
        for (int i = 0; i < list.size(); i++) {
            String name = list.get(i).getName();
            int age = list.get(i).getAge();
            list.get(i).eat(name,age);
        }
    }
    public static void KeepPetD(ArrayList<? extends Dog> list){
        for (int i = 0; i < list.size(); i++) {
            String name = list.get(i).getName();
            int age = list.get(i).getAge();
            list.get(i).eat(name,age);
        }
    }
    public static void KeepPetA(ArrayList<? extends Animal> list){
        for (int i = 0; i < list.size(); i++) {
            String name = list.get(i).getName();
            int age = list.get(i).getAge();
            list.get(i).eat(name,age);
        }
    }
}
